package br.com.trimark.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import br.com.caelum.vraptor.ioc.Component;
import br.com.trimark.dao.generic.impl.GenericHibernateDAOImpl;
import br.com.trimark.dao.impl.IUsuarioDao;
import br.com.trimark.utils.exception.DataException;
import br.com.trimark.pojo.Usuario;

@Component
public class UsuarioDao extends GenericHibernateDAOImpl<Usuario> implements IUsuarioDao {

	private static final long serialVersionUID = -4172510092922515190L;
	
	@Override
	public List<Usuario> listaTodos() throws DataException {
		try {
			return findAll();
		} catch (Exception e){
			throw new DataException(e);
		}
	}
	
	@Override
	public void adicionar(Usuario usuario) throws DataException {
		save(usuario);
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public Usuario validar(Usuario usuario) throws DataException {
		
		Criteria criteria = createCriteria();
		criteria.add(Restrictions.eq("loginUsuario", usuario.getLoginUsuario()));
		criteria.add(Restrictions.eq("senhaUsuario", usuario.getSenhaUsuario()));
		
		List<Usuario> resultList = criteria.list();
		Usuario u = null;
		
		if (resultList.get(0) != null) {
			u = resultList.get(0);
		}
		
		return u;
	}
}
